package com.zyf.chapter02.behavior.template.template;

/**
 * 模板模式的模板代码
 * 在实际的项目开发中，模板模式的代码实现比较灵活，具体场景会有具体的表现。
 * @author yifeng
 */
public abstract class AbstractClass {
    /**
     * 将该函数定义为 final，是为了避免子类重写它
     */
    public final void templateMethod() {
        // ..
        method1();
        // ..
        method2();
    }

    /**
     * 强迫子类去实现
     */
    protected abstract void method1();
    /**
     * 强迫子类去实现
     */
    protected abstract void method2();
}
